package hadoop;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.zookeeper.common.IOUtils;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
//import org.apache.hadoop.io.IOUtils;

import java.io.IOException;
import java.net.URI;

public class HadoopUtil  {
    public  String hadoopUpload(String srcPath ,String destPath) throws IOException {
        String url = "hdfs://192.168.135.11:9000";

        Configuration conf = new Configuration();
        FileSystem fileSystem = FileSystem.get(URI.create(url),conf);

        //案例3： 上传本地文件到hdfs

        // 本地的 文件
        Path srcLoc =new Path(srcPath);
        // hdfs 的路径
        Path destLoc = new Path(destPath);
        // 使用 hadoop 的 copyFromLocalFile
        fileSystem.copyFromLocalFile(srcLoc,destLoc);

        return "上传成功";
    }
    // 读文件
    public String hadoopRead(String filePath)throws IOException {

        // 用api的形式 读取下我们刚才写的文件
        String reaUrl = "hdfs://192.168.135.11:9000/"+ filePath;
        // 加载hdfs 的配置
        Configuration conf = new Configuration();
        // 建立hdfs连接
        FileSystem fileSystem = FileSystem.get(URI.create(reaUrl),conf);  //URI.create(reaUrl),conf)
        // 打开url路径的文件
        FSDataInputStream fsDataInputStream = fileSystem.open(new Path(reaUrl));
        // 输出 文件内容，并关闭输入流
        IOUtils.copyBytes(fsDataInputStream, System.out,4096,false);

        return "读取成功";
    }

    // 下载
    public String hadoopDownload(String srcPath)throws IOException {


        return "";
    }



}
